/*
 * @Author: tomystery 
 * @Date: 2018-05-10 17:38:49 
 * @Last Modified by: t
 * @Last Modified time: 2018-05-15 09:56:11
 */
/* 类和对象的区别是类可以作隔离的作用域，假如用的是对象的话，几个模块公用一个对像，如果其中一个模块把对象给改掉了导致其他的模块也受影响，如果做了隔离的作用域则直接new一个就好了 */

class MUtil {
    request(param) {
        return new Promise((resolve, reject) => {
            $.ajax({
                type: param.type || 'get',
                url: param.url || '',
                dataType: param.dataType || 'json',
                data: param.data || null,
                success :res=> {
                    //数据请求成功
                    if (0 === res.status) {
                        typeof resolve === 'function' && resolve(res.data, res.msg)
                    }
                    //没有登陆状态，强制登陆
                    else if (10 === res.status) {
                        //做登陆
                        this.doLogin()
                    } else {
                        typeof reject === 'function' && reject(res.data, res.msg)
                    }
                },
                error :err=> {
                    typeof resolve === 'function' && resolve(err.data, err.msg)
                }
            });
        });

    }
    //跳转登陆
    doLogin() {
        window.location.href = '/login?redirect=' + encodeURIComponent(window.location.pathname);
    }

    //获取URL参数
    getUrlParam(name) {
        //param=123&param1=456
        let queryString = window.location.search.split('?')[1] || ''
        let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        /* 开头或者&符号开头+name+ =不是&符号的，以&或者$结尾的*/
        let result = queryString.match(reg);

        return result ? decodeURIComponent(result[2]) : null; //先判断result存不存在

        //查看param的匹配，result:['param=123'，'','123','&']

    }
    //成功提示
    successTips(successMsg) {
        alert(successMsg || '操作成功')
    }

    //错误提示
    errTips(errMsg) {
        alert(errMsg || '好像哪里不对了～')
    }

    setStorage(name, data) {
        let dataType = typeof data;
        if (dataType === 'object') {
            window.localStorage.setItem(name, JSON.stringify(data));
        }
        //基础类型
        else if (['number', 'boolean', 'string'].indexOf(dataType) >= 0) {
            window.localStorage.setItem(name, data)
        } else {
            alert('该数据类型不支持本地存储！')
        }
    }

    getStorage(name) {
        let data = window.localStorage.getItem(name)
        if (data) {
            return JSON.parse(data)
        } else {
            return ''
        }
    }

    //删除本地存储
    removeStorage(name) {
        window.localStorage.removeItem(name)
    }

}
export default MUtil;